package com.ll.stringbuilderdemo;

/**
 * @author 刘龙
 * @version 1.0
 */
public class StringBuilder01 {
    public static void main(String[] args) {
        // 1.StringBuilder 继承 AbstractStringBuilder 类
        // 2.StringBuilder 实现了 Serializable接口 ,
        // 说明 StringBuilder对象是可以串行化(对象可以网络传输)
        // 3.public final class StringBuilder 不能被继承
        // 4.StringBuilder 对象字符序列存放在父类AbstractStringBuilder的 byte[] value 中
        // 因此,字符序列是在堆中
        // 5.StringBuilder的方法,没有做互斥的处理,即没有synchronized关键字,因此在单线程的情况下,使用StringBuilder
        StringBuilder stringBuilder = new StringBuilder();

        // 创建了一个字符串
        String s = "a";
        // 实际上原来的"a"字符串对象已经丢弃了,现在又产生了一个字符串 s + "b"(也就是"ab"),
        // 如果多次执行这些改变字符串内容的操作,会导致大量副本字符串对象存留在内存冲,降低效率.
        // 如果主要的操作放在循环中,会极大影响程序的性能
        // 结论: 如果我们对String做大量的修稿,不要使用String
        s += "b";
    }
}
